#ifndef METODO_H
#define METODO_H

#include "../rotina.h"

class Metodo
{
protected:

   float Qs;//quantidade estimada de compra
   float Qr;//quantidade que resta
   double e;//precisao
   float Qc;//quantidade comprada desse produto,
   float Qe;//quantidade estocada de um produto
   double A;//limite inferior do isolamento
   double B;//limite superior do isolamento
   string Parada;//criterio de parada
   int IT;//numero de iteracao momentanea
   int N;//numero do dia decorrente
   double FX;//valor de calculo da funcao de Qc decorrente
   double DIF_A_B;//valor de diferenca dos limites do isolamento
   Metodo* Prox;//aponta para o proximo objeto resultado da lista
   string Tipo;//indica o tipo de metodo decorrente

public:

   // Construtor e destrutor:
   Metodo();
   ~Metodo();

   void set_qs(float Qs);
   void set_qr(float Qr);
   void set_e(double e);
   void set_qc(float Qc);//atualiza valor final de quantidade comprada de produtos
   void set_qe(float Qc, float Qr);
   void set_a(double A);
   void set_b(double B);
   void set_parada(string novo_Parada);//atribui o motivo de parada do metodo
   void set_it(int IT);//incrementa a iteracao atual
   void set_n(int N);//atualiza o dia
   void set_fx(double FX);
   void set_dif_a_b(double A, double B);
   void set_prox(Metodo* Prox);//atualiza ponteiro para o proximo objeto resultado criado
   float get_qs();
   float get_qr();
   double get_e();
   float get_qc();
   float get_qe();
   double get_a();
   double get_b();
   string get_parada();
   int get_it();//retorna o numero da iteracao atual
   int get_n();//retorna o numero do dia decorrente
   double get_fx();//retorna o valor da funcao de Qc decorrente
   double get_dif_a_b();//retorna o valor da diferenca dos limites do isolamento
   Metodo* get_prox();//retorna ponteiro para o proximo objeto resultado da lista
   string get_tipo();//retorna o tipo de metodo decorrente
};

#endif
